﻿#pragma once
// 出牌类
#ifndef PLAYHAND_H
#define PLAYHAND_H

#include "card.h"
#include "cards.h"
#include "player.h"

// 一次出牌类
class PlayHand {
public:
	// 出牌组合或者方式
	enum HandType {
		NOT_NIU = 0, //没牛
		NIU_1 = 1, //牛一
		NIU_2 = 2, //牛二
		NIU_3 = 3, //牛三
		NIU_4 = 4, //牛四
		NIU_5 = 5, //牛五
		NIU_6 = 6, //牛六
		NIU_7 = 7, //牛七
		NIU_8 = 8, //牛八
		NIU_9 = 9, //牛九
		NIU_NIU = 10, //牛牛
		SILVER_NIU = 11, //银牛
		GOLD_NIU = 12, //金牛
		BOMB = 13, //炸弹
		SMALL_NIU = 14, //五小牛
	};

	PlayHand();
	


private:

	HandType judgeCardType(Player* player);


private:
	// 出牌的类型
	HandType m_type;
	// 出牌的点数，用来比较出牌的大小
	// 比如3个3带4，比，3个5带4，小，因为前者的m_pt是3，后者m_pt是5
	Card::CardPoint m_pt;
	// 但是有的时候，靠m_pt来比较，是不行的，比如连对
	// 靠m_pt来存储点数，靠m_extra来存储连对的个数
	int m_extra;
	// 比如，我出牌3个3带1个4，那么 m_oneCard 就会等于 4， m_threeCard 等于3
	QVector<Card::CardPoint> m_oneCard;  //单牌
	QVector<Card::CardPoint> m_twoCard;  //双牌，装入元素 2 ，代表有2张2
	QVector<Card::CardPoint> m_threeCard;  //三牌 装入元素4 ，代表有3张4
	QVector<Card::CardPoint> m_fourCard;   //四牌
};

#endif  // PLAYHAND_H
